python 类定义、属性跟方法
1、类的定义:
class 类名:
pass
class person(object):
pass
类名 :定义规则跟函数差不多,函数第一个单词首字母不会大写
类是一个独立存放变量(属性/方法)的空间
运算符“.” 调用类的属性方法
class Person: #定义一个名字是Person的类
varl = ‘这是直接封装在类中的属性’
print(Person.var1) #调用属性
Person.var2= ‘这是后来封装在类中的属性’
print(Person.var2)
wum = Person() #wum就是Person类的一个实例
print(wum.var1) #调用属性
print(wum.var2) #调用属性
class Person:
aa = 10
xiaoming = Person()
print(xiaoming.aa)
class Person:
aa = 10
xiaoming = Person()
xiaohong = Person()
xiaoming.bb = 123 #属性赋值,实例属性
print(xiaoming.bb)
实例也是一个独立存放变量的空间
每个实例都是一个独立的变量空间。
不同实例之间的空间互相不可见。
class Person: #定义一个名字是Person的类
pass
wum = Person() #wum就是Person类的一个实例
mor = Person()
wum.age = 18 #后来封装在实例的属性
print(wum.age) #正常调用
print(Person.age) #报错在类中找不到这个属性 不回去实例中找
print(mor.age) #报错 在实例中找不到 类中也找不到
私有属性
01、在python中有两私有属性,一个下划线()和两个下划线(__)
02、私有属性:
在python中, 和 __ 的使用更多的是一种规范和约定,没有真正限制的目的
定义在类中的私有属性可以被子类继承
class Person: #定义一个名字是Person的类
pass
wum = Person() #wum就是Person类的一个实例
mor = Person()
wum.age = 18 #后来封装在实例的属性
print(wum.age) #正常调用
print(Person.age) #报错在类中找不到这个属性 不回去实例中找
print(mor.age) #报错 在实例中找不到 类中也找不到
class Person: #定义一个名字是Person的类
_sex = '男'
__age = '18'
ht = Person() #wum就是Person类的一个实例
print(ht._sex) #可以访问_sex属性
print(ht.__age) #报错不可以直接访问__age属性
print(ht.Person__age) #可以访问
2、方法:就是封装在类里的一种特殊的函数
class Person: #定义一个名字是Person的类
def eat(self): #在Person类中定义eat方法
print('吃鸡腿')
ht = Person()
ht.eat() #调用eat方法
实例方法
class Person: #定义一个名字是Person的类
def eat(self): #在Person类中定义eat方法
print('%s吃鸡腿'%self.name)
ht = Person()
ht.name = '小明'
ht.eat() #调用eat方法
3、初始化、析构
初始化 特殊方法
class Person: #定义一个名字是Person的类
def __init__(self,name): #初始化方法,在实例生成的一瞬间就会执行这个方法
self.name = name #用一个name参数赋值给实例的name属性
def eat(self): #在Person类中定义eat方法
print('%s吃鸡腿'%self.name) #调用实例wum的name属性
wum = Person('无名') #实例化是需要传一个参数
wum.eat() #调用eat方法
关于魔法方法。他们的执行顺序一般情况下不是有自己决定的,而是由类决定他们什么会执行
02、析构
del 就是一个析构函数,当使用del删除对象时,会调用他本身的析构函数。提示开发者,对象被销毁了,方便调试
def __del__(self):
print(self.name,'被销毁了')