1.类相关
class Chinese():
pifu = "黄种人"
def chadui():
print("正在插队!")
def xuanfu(self):
print("正在炫富")
print(Chinese.pifu) #打印类属性 pifu
Chinese.chadui() #类方法
Chinese.xuanfu(1) #类得方法 必须传入一个值self 这里可以随便传入 因为 这个函数下面没有用的实例self的属性
print(dir(Chinese)) #打印类中的方法
print("dict", Chinese.__dict__) #打印类得属性 字典形式
print(Chinese.__dict__["pifu"]) #获取类字典的key所对应的值
print(Chinese.__dict__["chadui"]())
print(Chinese.__dict__["xuanfu"](1))
2.实例属性的增删改查
class Chinese():
name = "中国人"
def __init__(self, name, age):
self.name = name
self.age = age
def eat_food(self, food):
print("%s is eat %s" % (self.name, food))
print(Chinese.name) # 类得属性
print("类属性", Chinese.__dict__)
p1 = Chinese("alex", 33) #生成实例
print(p1.age) # 查询实例的属性age
p1.sex = "male" #设置实例的属性 sex
print("实例属性", p1.__dict__) #查看实例都有哪些属性
# 不要修改底层的属性字典!!!!!!!
p1.__dict__['sex'] = 'xiuxgaile'
print(p1.__dict__)
print(p1.sex)
3.类属性的增删改查
class Chinese():
name = "中国人"
def __init__(self, name, age):
self.name = name
self.age = age
def eat_food(self, food):
print("%s is eat %s" % (self.name, food))
print(Chinese.name)
Chinese.name = "黄种人" #修改类得属性
print(Chinese.name) # 对类得属性的增删改查
Chinese.action = "打架" # 增加类属性
# print(dir(Chinese))
# print(Chinese.action)
Chinese.food = "屎"
p1 = Chinese("alex", "33")
# Chinese.eat_food(p1,Chinese.food)
print(dir(Chinese))
p1.eat_food("food")
del Chinese.food # 类属性的删除
print(dir(Chinese))
def he_shui(self, water):
print("%s is drinking %s" %(self.name,water))
Chinese.heshui=he_shui # 对类得方法的增加
p1.heshui("shui")
#修改 ,删除相同
4.类属性实例属性的查找顺序
class Chinese:
country='China'
def __init__(self,name):
self.name=name
def play_ball(self,ball):
print('%s 正在打 %s' %(self.name,ball))
p1=Chinese('alex')
print(p1.country)
p1.country='日本' # 这个是对实例的属性的添加
print('类的--->',Chinese.country)
print('实例的',p1.country)
# *********************************************
country='中国'
class Chinese:
def __init__(self,name):
self.name=name
def play_ball(self,ball):
print('%s 正在打 %s' %(self.name,ball))
p1=Chinese('alex')
print(p1.country) #找不到country的值 因为用的是点的方法 那么实例只会先找自己实例属性 找不到找类得属性
# 再找不到就报错了
# *****************************************************************
country='中国'
class Chinese:
def __init__(self,name):
self.name=name
def play_ball(self,ball):
print('%s 正在打 %s' %(self.name,ball))
def shi_li_hua():
name=input('>>: ')
p1=Chinese(name) #初始化 实例 name 是自己输入的值
# print(p1.country) # 找不到country
print(p1.name) # 实例的name
shi_li_hua()
# ********************************************************
country = '中国-------------------'
class Chinese:
country = '中国'
def __init__(self, name):
self.name = name
print('--->', country) #country找到的
def play_ball(self, ball):
print('%s 正在打 %s' % (self.name, ball))
print(Chinese.__dict__)
print(Chinese.country)
p1 = Chinese('alex') # 实例化过程没有掉实例或者类里的country
# print('实例--------》',p1.country) #这个找的是类里面的country
5.类属性实例属性查找之关于列表
class Chinese:
country = 'China'
l = ['a', 'b']
def __init__(self, name):
self.name = name
def play_ball(self, ball):
print('%s 正在打 %s' % (self.name, ball))
p1 = Chinese('alex')
print(p1.l) # 类得l列表
p1.l.append('c') # 类l 添加了c
print(p1.__dict__)
print(Chinese.l)
# p1.l=[1,2,3] #实例增加了一个列表l
# print(Chinese.l) #类得l
# print(p1.__dict__) #实例增加一个l