duixiang,bu tuijian tom.name
class Cat:
def eat(self):
print("%s love fish" % self.name)
def drink(self):
print("%s want water" % self.name)
tom = Cat()
tom.name = "tom"
tom.eat()
tom.drink()
print(tom)
lazy_cat = Cat()
lazy_cat.name = "lanmao"
lazy_cat.eat()
lazy_cat.drink()
print(lazy_cat)
addr = id(tom)
print("%x" % addr)
addr2 = id(lazy_cat)
print("%x" % addr2)
tom love fish
tom want water
<__main__.Cat object at 0x7f25664d1518>
lanmao love fish
lanmao want water
<__main__.Cat object at 0x7f25664d15c0>
7f25664d1518
7f25664d15c0
初始化内部定义
class Cat:
def __init__(self):
print("zheshi yige chushihua")
self.name = "feifei"
tom = Cat()
print(tom.name)
zheshi yige chushihua
feifei
gaizao
class Cat:
def __init__(self, new_name):
print("zheshi yige chushihua")
self.name = new_name
def eat(self):
print("%s love fish" % self.name)
tom = Cat("tom")
print(tom.name)
lazy_cat = Cat("lanmao")
lazy_cat.eat()
zheshi yige chushihua
tom
zheshi yige chushihua
lanmao love fish
class Cat:
def __init__(self, new_name):
self.name = new_name
print("%s lai" % self.name)
def __del__(self):
print("%s qule" % self.name)
def __str__(self):
return "wo shi xiaomao[%s] " % self.name
tom = Cat("tom")
print(tom)
tom lai
wo shi xiaomao[tom]
tom qule
class Person:
def __init__(self, name, weight):
self.name = name
self.weight = weight
def __str__(self):
return "wo jiao %s, tizhong %.2f" % (self.name, self.weight)
def run(self):
print("paobu %s " % self.name)
self.weight -= 0.5
def eat(self):
print("%s chi " % self.name)
self.weight += 1
xiaoming = Person("xiaoming", 75)
xiaoming.run()
xiaoming.eat()
print(xiaoming)
xiaomei = Person("xiaomei", 55)
xiaomei.run()
xiaomei.eat()
print(xiaomei)
paobu xiaoming
xiaoming chi
wo jiao xiaoming, tizhong 75.50
paobu xiaomei
xiaomei chi
wo jiao xiaomei, tizhong 55.50
class HouseItem:
def __init__(self, name, aera):
self.name = name
self.aera = aera
def __str__(self):
return "%s zhan %.2f" % (self.name, self.aera)
class House:
def __init__(self, type, area):
self.type = type
self.area = area
self.free_area = area
self.item_list = []
def __str__(self):
return ("huxing: %s\n zongmianji: %.2f[shengyu: %.2f]\n jiaju: %s") \
% (self.type, self.area,
self.free_area, self.item_list)
def add_item(self, item):
print("yao tianjia %s" % item)
# panduan
if item.aera > self.free_area:
print("%s taida" % item.name)
return
# tianjia
self.item_list.append(item.name)
# shengyu mianji
self.free_area -= item.aera
bed = HouseItem("ximengsi", 41)
chest = HouseItem("yigui", 10)
table =HouseItem("canzhuo", 15)
print(bed)
print(chest)
print(table)
my_home = House("2shi1ting", 40)
my_home.add_item(bed)
my_home.add_item(chest)
my_home.add_item(table)
print(my_home)
ximengsi zhan 41.00
yigui zhan 10.00
canzhuo zhan 15.00
yao tianjia ximengsi zhan 41.00
ximengsi taida
yao tianjia yigui zhan 10.00
yao tianjia canzhuo zhan 15.00
huxing: 2shi1ting
zongmianji: 40.00[shengyu: 15.00]
jiaju: ['yigui', 'canzhuo']
class Gun:
def __init__(self, model):
# 1.qiang xinghao
self.model = model
# 2.zidan shuliang
self.bullet_count = 0
def add_bullet(self, count):
self.bullet_count += count
def shoot(self):
# 1.panduan shuliang
if self.bullet_count <= 0:
print("%s meiyou zidan le" % self.model)
return
# 2.fashe zidan
self.bullet_count -= 1
# 3.tishi fashe xinxi
print("[%s] tututu %d" % (self.model, self.bullet_count))
class Soldier:
def __init__(self, name):
# xingming
self.name = name
# qiang, xinbing mei qiang,buneng yong qita xiang duixiang
self.gun = None
def fire(self):
# panduan shifou youqiang
#if self.gun == None:
if self.gun is None:
print("%s meiyou qiang" % self.name)
return
# han kouhao
print("chong a [%s]" % self.name)
# zhuang zidan
self.gun.add_bullet(50)
# fashe
self.gun.shoot()
# 1.chuangjian qiang duixiang
ak47 = Gun("ak47")
#ak47.add_bullet(50)
#ak47.shoot()
# 2.chuangjian shibing
xusanduo =Soldier("xusanduo")
xusanduo.gun = ak47
xusanduo.fire()
print(xusanduo.gun)
print(xusanduo.gun.bullet_count)
chong a [xusanduo]
[ak47] tututu 49
<__main__.Gun object at 0x7fe2ce372630>
49
siyou
class Women:
def __init__(self, name):
self.name = name
self.__age = 18
def __secret(self):
# zai duixiang de fangfa nei keyi fangwen siyou shuxing
print("%s de nianling %d" % (self.name, self.__age))
xiaofeng = Women("xiaofang")
# siyou buke fangwen
# print(xiaofeng.__age)
print(xiaofeng._Women__age)
# siyou fangfa buneng fangwen
# xiaofeng.__secret()
xiaofeng._Women__secret()
class Animal:
def eat(self):
print("chi")
def drink(self):
print("he")
def run(self):
print("pao")
def sleep(self):
print("shui-")
class Dog(Animal):
def bark(self):
print("wangwang")
class XiaoTianQuan(Dog):
def fly(self):
print("huifei")
wangcai = XiaoTianQuan()
wangcai.eat()
wangcai.run()
wangcai.sleep()
wangcai.drink()
wangcai.bark()
wangcai.fly()
chi
pao
shui-
he
wangwang
huifei
overwrite
class Animal:
def eat(self):
print("chi")
def drink(self):
print("he")
def run(self):
print("pao")
def sleep(self):
print("shui-")
class Dog(Animal):
def bark(self):
print("wangwang")
class XiaoTianQuan(Dog):
def fly(self):
print("huifei")
def bark(self):
print("aoaoao")
super().bark()
print("lalalal")
wangcai = XiaoTianQuan()
wangcai.eat()
wangcai.run()
wangcai.sleep()
wangcai.drink()
wangcai.bark()
wangcai.fly()
chi
pao
shui-
he
aoaoao
wangwang
lalalal
huifei
父类的公有方法中私有属性输出,调用私有方法
class A:
def __init__(self):
self.num1 = 100
self.__num2 = 200
def __test(self):
print("siyou fangfa %d %d" % (self.num1, self.__num2))
def test(self):
print("gongyou fangfa %d" % self.__num2)
self.__test()
class B(A):
def demo(self):
# print("fulei ziyou %d" % self.num2)
# fangwen fulei de gongyou shuxing
print("zilei fangfa %d" % self.num1)
# diaoyong fulei de gongyou fangfa
self.test()
b = B()
print(b)
# print(b.__num2)
# b.__test()
b.demo()
# print(b.num1)
# b.test()
<__main__.B object at 0x7fe9f92e54a8>
zilei fangfa 100
gongyou fangfa 200
siyou fangfa 100 200