Python Class
-
类中定义的变量为类变量, __init__函数中定义的变量为实例变量, ClassName.name是属于类变量,method.name是属于实例变量:
class Student: nums = 0 # 类变量 def __init__(self,name,school): self.name = name # 实例变量 self.school = school # 实例变量 Student.nums += 1 def intorduce(self): print("i am ", self.name, " and i from ",self.school) pidan = Student('pidan','hbfu') lily = Student("lily",'hbbu') pidan.intorduce() lily.intorduce() print(pidan.nums)
i am pidan and i from hbfu i am lily and i from hbbu 2
-
类中函数的第一个参数一定要为self,self表示的是类的实例,而不是类,self不是关键字,可以换成别的其它的都行。
-
实例可以自己添加属性,类也可以自己添加属性,也可以自己删除,各实例之间自己添加删除自己的属性对其它实例没有影响,类添加删除属性则全部实例都跟着变化。
# 接上面代码 pidan.age = 21 print(pidan.age) print(pidan.__dict__) print(lily.__dict__) Student.classes = 'people' print(Student.classes) print(pidan.classes) print(lily.classes)
{'school': 'hbfu', 'age': 21, 'name': 'pidan'} {'school': 'hbbu', 'name': 'lily'} people people people
python内置类属性
- dict : 类的属性(包含一个字典,由类的数据属性组成)
- doc :类的文档字符串
- name: 类名
- module: 类定义所在的模块(类的全名是’main.className’,如果类位于一个导入模块mymod中,那么className.module 等于 mymod)
- bases : 类的所有父类构成元素(包含了一个由所有父类组成的元组)
一直不懂的地方
if __name__ == '__main__':
这里:
有句话经典的概括了这段代码的意义:
“Make a script both importable and executable”
意思就是说让你写的脚本模块既可以导入到别的模块中用,另外该模块自己也可执行