2020-09-16-python-2

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
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。