Если Вы не изменяете DOM, можно получить их всех согласно индексируемому порядку:
( Прототип пример)
myNodes = document.body.descendants()
alert(document.body.descendants()[1].innerHTML)
Вы могли циклично выполниться через все узлы и дать им уникальное имя класса, которое Вы могли позже выбрать легко.
Если атрибуты будут отличаться от экземпляра
для экземпляра сделать их экземпляр
атрибут, т.е. создать их
внутри __ init __
используя self иначе, если им нужно
быть разделенным между экземплярами класса
как константа, поместите их в класс
уровень.
Если ваш класс действительно нужно сдать, так что
много аргументов в __ init __
, пусть
получить список аргументов использования класса и
аргументы ключевого слова например
class Dog(ClassWithLotsOfAttributes): def __init__(self, *args , **kwargs): super(ClassWithLotsOfAttributes, self).__init__(*args , **kwargs) self.coolness = "really cool!!!
__ init __
, класс может принимать некоторые
значения по умолчанию, и пользователь может их изменить
позже, если потребуется. Используйте 4 пробела вместо табуляции.
если вам нужно добавить дополнительный аргумент, также в Dog и ключевое слово arg old
class CoolDog(ClassWithLotsOfAttributes): def __init__(self, bite, *args , **kwargs): self.old = kwargs.pop('old', False) # this way we can access base class args too super(ClassWithLotsOfAttributes, self).__init__(*args , **kwargs) self.bite = bite self.coolness = "really really cool!!!
различные способы использованияCoolDog
CoolDog(True)
CoolDog(True, old=False)
CoolDog(bite=True, old=True)
CoolDog(old=True, bite=False)
Возможно, вы сможете разбить свои массивные классы на классы, каждый из которых выполняет только одну простую задачу. Обычно классам не нужно такое количество атрибутов.
Если вам действительно нужно иметь такое количество атрибутов, я думаю, вам придется смириться с назначением их всех, тем более что вам нужны значения по умолчанию для всех них. Однако вам не нужно переназначать значения по умолчанию в ваших подклассах (я вижу, что Anurag Uniyal показал, как это сделать.)
Вы должны назначить их self
, однако, а не как атрибуты класса. Обратите внимание на разницу:
class Class1(object):
attr1 = 'abc'
class Class2(object):
def __init__(self):
self.attr1 = 'abc'
Class1.attr1 # returns 'abc'
c = Class1()
c.attr1 # Also returns 'abc'
Class1.attr1 = 'def'
c.attr1 # Returns 'def'!
c.attr1 = 'abc' # Now the c instance gets its own value and will show it
# independently of what Class1.attr1 is. This is the same
# behavior that Class2 exhibits from the start.