# 私有属性和方法及其访问的方法
class Woman:
def __init__(self,name):
self.name=name
self.__age=18
def __secret(self):
print("%s的年龄是%d"%(self.name,self.__age))
xiaofang=Woman("小芳")
print(xiaofang._Woman__age)#不建议使用这种方式访问私有属性
#只建议使用公共方法访问私有属性
class Animal:
def eat(self):
print("吃")
def drink(self):
print("喝")
def run(self):
print("跑")
def sleep(self):
print("睡")
class Dog(Animal):
def bark(self):
print("汪汪叫")
class XiaoTianQuan(Dog):
def fly(self):
print("我会飞")
def bark(self):
# 调用父类方法一,使用特殊对象super(). 注意括号!
super().bark()
# 调用父类方法二(不推荐使用)
Dog.bark(self)
print("-"*10)
print("叫的跟神一样")
class Cat(Animal):
def catch(self):
print("抓老鼠")
xtq=XiaoTianQuan()
xtq.bark()
wangcai=Dog()
wangcai.sleep()
class Dog(object):# 注意使用新式类(以object为父类的基类)
def __init__(self,name):
self.name=name
def game(self):
print("普通狗的蹦跳")
class XiaoTianQian(Dog):
def game(self):
print("%s飞到天上去玩耍"% self.name)
class Person(object):
def __init__(self,name):
self.name=name
def game_with_dog(self,dog):
print("%s和%s快乐的玩耍" % (self.name,dog.name))
dog.game()
commondog=Dog("普通狗")
wangcai=XiaoTianQian("飞天旺财")
xiaoming=Person("小明")
xiaoming.game_with_dog(wangcai)
xiaoming.game_with_dog(commondog)
//不同子类对象调用相同父类方法,产生不同结果
//前提:继承 重写
class Game(object):
top_score = 0
def __init__(self, player_name):
self.player_name = player_name
@staticmethod
def show_help(): # 应为静态方法,既无需访问类属性,也无需访问实例属性
print("帮助信息:让僵尸进入大门")
@classmethod
def show_top_score(cls): # 应为类方法,只需访问类的属性
print("历史记录 %d" % cls.top_score)
def start_game(self): # 应为实例方法,只需访问实例属性
print("%s 开始游戏啦" % self.player_name)
game = Game("小明")
game.start_game()