一、定义一个类
格式:
class 类名(建议首字母大写):
pass
class Student:#定义了一个Student类age=18def __init__(self,name,hight):self.name=nameself.hight=hight
二、定义属性
(一)类属性
class Student:age=18#类属性def __init__(self,name,hight):self.name=nameself.hight=hight
(二)实例属性(利用构造函数得出的属性为实例属性)
class Student:age=18def __init__(self,n,h):#构造函数self.name=nself.high=h
#name和high都为实例属性
三、方法
(一)实例方法(一般类中定义的方法默认都是实例方法)
class Student:age=18#类属性def __init__(self,n,h):self.name=nself.high=hdef talk(self):#实例方法return "我叫{},今年{}岁,身高为{}".format(self.name, Student.age, self.high)
(二)类方法(与实例方法相似,必须含有cls这个参数,和@classmethod修饰符
格式:
@classmethod
def 函数名(cls):
pass(一般用类的属性来编写)
class Student:age=18def __init__(self,n,h):self.name=nself.high=hdef talk(self):return "我叫{},今年{}岁,身高为{}".format(self.name, Student.age, self.high)@classmethoddef put(cls):#类方法print(cls.age)#类方法一般用类的属性(而不使用实例属性)
(三)类静态方法(没有像self、cls的参数,使用@staticmethod修饰符)
格式:
@staticmethod
def 函数名():
pass(无法调用任何类属性和类方法)
class Student:age=18def __init__(self,n,h):self.name=nself.high=hdef talk(self):return "我叫{},今年{}岁,身高为{}".format(self.name, Student.age, self.high)@classmethoddef put(cls):print(cls.age)@staticmethoddef test():#类静态方法print("Hello")
四、调用方法
(一)在(类)方法里面调用属性
1.调用类属性格式:
类名.调用的属性名
class Student:age=18#类属性def __init__(self,n,h):self.name=nself.high=hdef talk(self):return "我叫{},今年{}岁,身高为{}".format(self.name, Student.age, self.high)
# |
# 此处调用了类属性
2.调用实例属性格式:
该方法的参数(self/cls).属性名
class Student:age=18#类属性def __init__(self,n,h):self.name=nself.high=hdef talk(self):return "我叫{},今年{}岁,身高为{}".format(self.name, Student.age, self.high)
# | |
# 调用了实例属性 调用了实例属性
(二)在(类)方法里面调用该类里面的其它方法
格式:类名.类方法
class Student:age=18def __init__(self,n,h):self.name=nself.high=hdef talk(self):return "我叫{},今年{}岁,身高为{}".format(self.name, Student.age, self.high)def look(self):return Student.talk(self)#调用了已经定义好的talk方法
(三)在类外部调用属性
1.调用类属性格式:
①类名.类属性名
②变量=类名(有参数则传参数)##实例化
变量.类属性名
class Student:age=18#类属性def __init__(self,n,h):self.name=nself.high=hdef talk(self):return "我叫{},今年{}岁,身高为{}".format(self.name, Student.age, self.high)print(Student.age)#第一种方法
s=Student("Lihua",180)
print(s.age)#第二种方法
#结果
18
18
2.调用实例属性格式:
变量=类名(有参数则传参数)##实例化
变量.实例属性名
class Student:age=18def __init__(self,n,h):self.name=n#实例属性self.high=h#实例属性def talk(self):return "我叫{},今年{}岁,身高为{}".format(self.name, Student.age, self.high)s=Student("Lihua",180)
print(s.name)#调用实例属性
#结果
Lihua
(四)在类外部调用类和实例方法
格式:
①类名.类/实例方法名
②变量=类名(有参数则传参数)
变量.类/实例方法名
class Student:age=18def __init__(self,n,h):self.name=nself.high=hdef talk(self):#实例方法return "我叫{},今年{}岁,身高为{}".format(self.name, Student.age, self.high)@classmethoddef put(cls):#类方法return cls.age@staticmethoddef test():#类方法return "Hello"
#方法一
print(Student.put())
print(Student.test())
#因为实例方法包含一些参数没有传入,所以无法调用
#方法二
s=Student("Lihua",180)
print(s.talk())
print(s.put())
print(s.test())
#结果
18
Hello
我叫Lihua,今年18岁,身高为180
18
Hello