# 类是为了代码重用
class First: #类 pass
#实例 = 类名() obj = First()
# 类是一种产生实例的工厂
# 类和模块的差异在于,内存中特定的模块只有一个实例(所以我们要重载模块取得新代码),对于类而言,制作多少实例都可以。
class Person: pass Person.name = 'Bob' Person.age = 18 print(Person.name) # >>Bob print(Person.age) # >>18 # 再创建两个实例 x = Person() y = Person() print(x.name) # >>Bob print(y.name) # >>Bob # 实例本身没有属性,他们的属性熊类对象取出name属性。 y.name = 'Tom' # 修改属性 print(Person.name, x.name, y.name) #>>Bob Bob Tom print(Person.__dict__.keys()) #>>dict_keys(['__module__', '__weakref__', '__doc__', 'age', 'name', '__dict__']) print(x.__dict__.keys()) # >>dict_keys([]) print(y.__dict__.keys()) # >>dict_keys(['name'])
#上面的 name 和 age 属性通过哦赋值语句动态建立,方法(def)也可以完全独立地在任意类对象的外部创建。
def uppername(arg): # 这里的参数可以随便定义, print(arg.name.upper()) uppername(y) #>>TOM Person.method = uppername x.method() y.method() Person.method(x) class Person: def __init__(self,name,job): # 运算符重载 self.name = name self.job = job def info(self): return (self.name, self.job) p1 = Person('mel','trainer') p2 = Person('vls','developer') print(p1.job,p2.info()) # trainer ('vls', 'developer')