Поскольку вы украшаете его как метод класса (@classmethod
), вам нужно получить доступ к нему как к переменной класса cls.H
.
Может быть, приведенный ниже небольшой пример немного поможет вам
class base_foo:
cls_variable = "I'm in Class...."
@staticmethod
def say_static_hello():
print("Hello...")
@classmethod
def say_class_hello(cls):
if(cls.__name__=="class_foo"):
print(cls.cls_variable)
print("Hello foo")
elif(cls.__name__=="class_bar"):
print(cls.cls_variable)
print("Hello bar")
class class_foo(base_foo):
def say_class_hello(self):
print("Class foo")
class class_bar(base_foo):
def say_static_hello(self):
print("Class bar")
test_foo = class_foo()
test_foo.say_class_hello()
test_foo.say_static_hello()
test_bar = class_bar()
test_bar.say_class_hello()
test_bar.say_static_hello()
Вывод:
Class foo
Hello...
I'm in Class....
Hello bar
Class bar
РЕДАКТИРОВАТЬ:
Что-то не так, поэтому я изменил код, чтобы его не выполнить с файлом ниже. отдельный файл?
Почему?
В вашем файле есть Diacritics
(Non-Ascii) :) вот почему. Проверьте это https://pteo.paranoiaworks.mobi/diacriticsremover/
import math
class Agent: # Les class n'ont pas de () à la fin
def dire_bonjour(self,prenom):
return "Bonjour {} !".format(prenom)
def __init__(self,position,**agent_attributes):
self.position = position
for attr_name, attr_value in agent_attributes.items():
setattr(self,attr_name,attr_value)
class Position:
def __init__(self, abscisses_degrees, ordonnees_degrees):
self.abscisses_degrees = abscisses_degrees
self.ordonnees_degrees = ordonnees_degrees
@property
def abscisses_rad(self):
return self.abscisses_degrees * math.pi / 180
@property
def ordonnees_rad(self):
return self.ordonnees_degrees * math.pi / 180
class Zone:
ZONES = []
MIN_LONGITUDE_DEGREE = -180
MAX_LONGITUDE_DEGREE = 180
MIN_LATITUDE_DEGREE = -90
MAX_LATITUDE_DEGREE = 90
DDEGREES = 1
H = 1
def __init__(self, corner1,corner2):
self.corner1 = corner1
self.corner2 = corner2
self.inhabitants = 0
@classmethod
def initialize_zones(cls):
for abscisses in range(cls.MIN_LATITUDE_DEGREE,cls.MAX_LATITUDE_DEGREE,cls.H):
for ordonnees in range(cls.MIN_LONGITUDE_DEGREE,cls.MAX_LONGITUDE_DEGREE,DDEGREES):
bottom_left_corner = Position(longitude,latitude)
top_right_corner = Position(longitude+cls.DDEGREES,latitude+cls.H)
zone = Zone(bottom_left_corner,top_left_corner)
cls.ZONES.append(zone)
print(len(cls.ZONES))
def main():
for agent_attributes in json.load(open("agents-100k.json")):
abscisses = agent_attributes.pop("latitude") #Latii est couchée....(latitude)
ordonnees = agent_attributes.pop("longitude") # pour ne prélever que la valeur souhaitée, utiliser agent_attributes.pop(str)
position = Position(abscisses,ordonnees)
agent = Agent(position,**agent_attributes)
Zone.initialize_zones()