鉴于此课程:
class PythonClass():
def __init__(self,arg1='1',arg2='2')
self.arg3 = '3'
self.arg1 = arg1
self.arg2 = arg2
self.arg4 = arg3 + '1'
您可以指定self.arg3
和self.arg4
还是会产生语法错误?
class Scapy80211():
def __init__(self,intf='wlan0',ssid='test',\
source='00:00:de:ad:be:ef',\
bssid='00:11:22:33:44:55',srcip='10.10.10.10'):
self.rates = "\x03\x12\x96\x18\x24\x30\x48\x60"
self.ssid = ssid
self.source = source
self.srcip = srcip
self.bssid = bssid
self.intf = intf
self.intfmon = intf + 'mon'
答案 0 :(得分:0)
如果您运行该代码,您会发现它执行时没有语法错误,这会回答您的基本问题。
您可能想知道为什么 Python允许您对类的随机属性进行赋值,而不以任何方式声明这些属性的存在 - 正如您可能熟悉的其他语言所要求的那样。
这是因为在Python中,对象的属性集合本质上是一个字符串索引的值字典。属性赋值只是一个字典操作。如果字典已经具有指定的键(属性名称),则该值将替换为新分配的键。如果字典不具有该键(即,该对象没有具有给定名称的属性),则键和值将添加到字典中。
回答你的下一个问题 - 是的,对象的不同实例因此可以具有与同一类的其他对象不同的属性。
回答你的下一个问题 - 是的,来自一种需要声明的类型属性的语言,这是一个非常不同的编程范例。