类
class 类名:
…执行语句…
…零个到多个类变量…
…零个到多个方法…
变量和方法介绍
1.变量
类变量用于定义该类本身所包含的状态数据;实例变量属于该类的对象,用于定义对象所包含的状态数据;
2.方法用于定义该类的对象的行为或功能的实现
- 定义实例方法与定义函数基本同,实例放的第一个参数会被绑定到方法的调用者,因此实例方法至少定义一个参数,该参数会被命名为self
- _init_构造法:用于构造该类的对象,是类创建对象的根本途径
定义一个Person类
class Person: #定义一个类
#定义一个类变量
hair = 'black'
def _init_(self,name = 'Liu',age = 24): #类的构造函数,用于初始化类的内部状态,为类的属性设置默认值
#为Person对象增加两个实例变量
self.name = name #定义name属性
self.age = age #定义age属性
#定义一个say方法
def say(self,content):#定义类的函数,称为方法,它至少有一个参数self
print(content)
代码解读:Person类中定义了一个构造方法_init_,第一个参数为self,被绑定到构造方法中作为初始化对象
类的实例化
创建对象的过程称为实例化,当一个对象被创建后,它包含3个属性:对象的句柄(用于区分不同的对象)、属性和方法
类名(参数)
没有手动添加_init_()构造方法,或者构造方法仅有一个self参数时,创建类对象时参数可以省略不写
class CLanguage:
#定义两个类变量
name = 'c语言中文网'
add = 'http://'
def _init_(self,name,add):
#定义2个实例变量
self.name = name
self.add = add
print(name,'网址为:',add)
#定义一个say实例方法
def say(self,content):
print(content)
#将该CLanguage对象赋给clanguage变量
clanguage = CLanguage('C语言中文网','http://')
代码解读:除self参数外,还包含两个没有设置默认的值参数,因此在实例化类对象时,还需传入相应的name和add值
定义在各个类方法之外(包含在类中)的变量为类变量(或类属性);定义在类方法中的变量为实例变量
类的属性和方法
1.类的属性
实例属性:以self为前缀的属性,没有使用self为前缀声明,则该变量只是普通的局部变量,类中其他方法定义的变量也是局部变量,而非类的实例属性。
静态属性:
class Fruit:
price = 0 #定义一个类属性
def __init__(self): #构造函数
self.color = "red" #实例属性,以self为前缀
zone = "China" #局部变量,不以self为前缀
if __name__ == "__main__":
print(Fruit.price) #使用类名调用类变量
apple = Fruit() #实例化apple
print(apple.color) #打印apple实例的颜色
Fruit.price = Fruit.price + 10#将类变量+10
print("apple's price:" + str(apple.price))#打印apple实例的price
banana = Fruit() #实例化banana
print("banana's price:" + str(banana.price)) #打印banana实例的price
# 0
# red
# apple's price:10
# banana's price:10
2.内部类的使用
内部类的方法有两种方法调用
- 直接使用外部类调用内部类,生成内部类的实例,在调用内部类的方法
object_name = outclass_name.inclass_name()
object_name.method()
- 先对外部类进行实例化,然后在实例化内部类,最后调用内部类的方法
out_name = outclass_name()
in_name = out_name.inclass_name()
in_name.method()
类对象的使用
1.类对象访问变量或方法
访问类中实例变量
类对象名.变量名
调用类中方法
对象名.方法名(参数)
#输出name和add实例变量的值
print(clanguage.name,clanguage.add)
#修改实例变量的值
clanguage.name = 'Python'
clanguage.add = 'http://'
#调用clanguage的say()方法
clanguage.say('天道酬勤')
print(clanguage.name,clanguage.add)
# c语言中文网 http://
# 天道酬勤
# Python http://
2.给类对象动态添加/删除变量
#为clanguage对象增加一个money实例变量
clanguage.money = 11
print(clanguage.money)
#11
#删除新添加的money实例变量
del clanguage.money
#再次尝试输出money,此时会报错
print(clanguage.money)
3.给类对象动态添加方法