classPythonStudent():
name ="NoOne"
age =18
course ="Python"
```
定义类中的函数
一般需要有self关键字
其余跟普通函数基本相同
```
defgiveMeMoney(self):print("Show me the money")returnNone
xiaobai = PythonStudent()print(xiaobai.name)print(xiaobai.age)print(xiaobai.course)
类的属性
classStudent():
name ="beijingtulingxueyuan"
age =19defsayHi(self):# 指代本身,默认实例作为第一个参数传入。print("aitulingaishenghuo")# 如果函数没有retrun None,则返回啥?returnNonedefsayHai(meme):# self名称可更改,meme同selfprint("love meme")returnNone
erna = Student()# 类的实例化
# 案例1classStudent():# name,age就是类的变量# 注意类的变量的定义位置和方法# 不需要前缀
name ="beijingtulingxueyuan"
age =19defsayHi(self):print("My name is {},i am {} years old.".format(self.name, self.age))returnNone# 以下案例说明,实例变量可以借用类的变量
erjing = Student()
erjing.sayHi()
# 案例1classStudent2():# name,age就是类的变量# 注意类的变量的定义位置和方法# 不需要前缀
name ="beijingtulingxueyuan"
age =19defsayHi(self, n, a):
self.name = n
self.age = a
print("My name is {},i am {} years old.".format(self.name, self.age))returnNone
erjing = Student2()# 注意观察下面语句打开和关闭后的区别# erjing.sayHi("erjing", 17)print("My name is {},i am {} years old.".format(Student2.name, Student2.age))print("My name is {},i am {} years old.".format(erjing.name, erjing.age))# 如果类也没有定义,报错print(erjing.father)
访问类的属性
在类里面,如果强制访问类的属性,则需要使用__class__,(注意前后的两个下划线)
类方法
定义类的方法的时候,没有self参数
类的方法只允许使用类的内容
两种用法
ClassName
__class__
classStudent():# name,age就是类的变量# 注意类的变量的定义位置和方法# 不需要前缀
name ="beijingtulingxueyuan"
age =19defsayHi(self):print("My name is {},i am {} years old.".format(self.name, self.age))returnNone# sos是类的方法,没有self参数,即不以实例自己为参# 类的方法调用需要用到特殊的方法defsos():# 类方法中不允许访问实例的任何内容,因为没有self参数,就是不能实例化,即类的方法只允许访问类的属性# print("My name is {},i am {} years old.".format(self.name, self.age)) # 报错# 如果访问类的内容(属性或其他方法),以下两种方式都可以print("My name is {},i am {} years old.".format(Student.name, __class__.age))returnNone
s = Student()
s.sayHi()
s.sos()# 报错# 类的方法的调用,直接用类调用
Student.sos()
构造函数
类在实例化的时候,执行一些基础性的初始化的工作
使用特殊的名称和写法
在实例化的时候自动执行
是在实例化过程中第一个被执行的函数
classStudent():
name = NoName
age =19def__init__(self):# 有self参数,因为构造函数是在实例化的过程中调用的print("我是构造函数")
erjing = Student()# 实例化时自动调用构造函数print(erjing.name)print(erjing.age)