1.定义类的方式
:pass是占位符(暂且未想到写什么)
具体代码如下:
# 类的组成以及定义:
class Student():
jk = "Niuma" # 类属性,类似于java类中的 static String name
op = 100 # 类属性:类似于java当中的 static int age
# 相当于java当中的有参构造方法,参数即是实例变量
def __init__(self, name, age):
self.name = name
self.age = age
# 实例方法,用实例对象进行调用
def eat(self):
print("同学在吃饭")
# 类方法,能够通过实例对象和类对象去访问
@classmethod
def run(cls):
print("同学正在跑")
# 静态方法,能够通过实例对象和类对象去访问
@staticmethod
def catch():
print("同学抓住了坤哥")
2.对于类的各个组成的用法总结(便捷必看)
以下总结内容不能只看,需要敲代码进行实际检测,才会印象深刻,以下内容仅为个人理解:
1.类属性:类的实例对象也具有该属性,在同一程序中,使用类.类属性这样的方式修改,那么该语句下面所实例化的所有对象之后的类属性都为该修改后的值。
from PyClass.test01 import Student
stu01 = Student("name", 12)
print(stu01.jk)
print(stu01.op)
Student.jk = "hhhhhhhh" # 修改后类属性之后
Student.op = "NNNNNNNN"
print(stu01.jk)
print(stu01.op)
stu02 = Student("CYH", 2222)
print(stu02.jk)
print(stu02.op)
2.实例方法:只能通过类的实例对象进行调用
3.实例属性(也就是java当中的成员变量,一般都是中__init__(self,…)方法中定义的变量:
例如:init(self,name,age)
那么这个当这个类实例化对象的时候,就需要传入两个参数,对name,age进行赋值,这两个属性就是这个类实例的属性,只可以用实例进行调用和修改,相当于(java当中的有参构造)
)
3.静态方法:区别于类方法的第一个参数没有(cls)
4.类方法:第一个参数名字一般为:cls,可以使用类对象和实例对象进行调用
以上具体观点的验证代码如下:
from PyClass.test01 import Student
# 实例化对象,并传入参数赋值(相当于java中的有参构造)
student01 = Student("CYH", 23)
# 输出实例化对象有的实例属性
print(student01.name)
print(student01.age)
# 使用实例化对象调用类属性(Student)
print(student01.jk)
print(student01.op)
# 使用实例对象调用实例方法
student01.eat()
# 使用实例对象调用类方法
student01.run()
# 使用实例对象调用静态方法
student01.catch()
# 使用类对象调用类属性
print(Student.jk)
print(Student.op)
# 使用类对象调用类方法
Student.run()
# 使用类对象调用静态方法
Student.catch()
3.动态绑定属性和方法
在类进行实例化之后,可以单独的为实例化对象进行动态的绑定属性和方法。
1.动态绑定属性:
基本语法:实例对象.新属性=属性值
2.动态绑定方法:
基本语法: 实例对象.方法名=定义的函数
代码如下:
# 对类的实例对象动态绑定属性和方法
from PyClass.test01 import Student
stu01 = Student("CYH", 20)
stu01.addr = "beijing"
print(stu01.addr)
def myrun():
print("CYH正在跑")
stu01.myrun = myrun()
stu01.myrun
运行结果如下:
4.类的继承