class Person:
def init(self, name, age):
self.name = name
self.age = age
# 遍历打印所有姓名-年龄
def print_info(self):
print("姓名:", self.name, " 年龄:", self.age)
创建一个对象
p = Person(“王老师”, 20)
p.print_info()
创建另外2个对象
p2 = Person(“王老师2”, 22)
p2.print_info()
p3 = Person(“王老师3”, 23)
p3.print_info()
class Hero(object):
def test1(self):
print(“这是一个方法”)
def test2(self, age):
print(“age=%d” % age)
def test3(self, score1, socre2, socre3):
return (score1 + score2 + score3) / 3
创建Hero类的对象
hero = Hero()
hero.test1() # test1无参无返回值
hero.test2(19) # test2需要传递实参
average_score = hero.test3(100, 99, 98) # test3需要实参,有返回值因此需要用变量来存储
class Hero(object):
def set_info(self):
# 下面定义的了3个实例属性,且给它们设置了初始值
self.name = “王老师”
self.age = 18
self.address = “山东青岛”
def print_info(self):
print(self.qq, self.email)
创建实例对象
hero = Hero()# 调用方法,从而让第4、5、6行被执行,从而完成实例对象的属性添加
hero.set_info()# 通过对象方式直接获取属性print(hero.name, hero.age, hero.address)# 给对象添加额外的属性
hero.qq = 123456
hero.email = “dong4716138@163.com” # 这是王老师真实的邮箱哦…# 调用方法,在方法中获取qq、email
hero.print_info()
class Cat(object):
def set_info(self, new_name, new_age):
self.name = new_name
self.age = new_age
def eat(self):
print("%s在吃鱼...." % self.name)
def drink(self):
print("%s在喝可乐..." % self.name)
def introduce(self):
print("名字是:%s, 年龄是:%d" % (self.name, self.age))
创建对象tom
tom = Cat()# 调用方法,设置属性
tom.set_info(“汤姆猫”, 30)# 调用实例方法
tom.eat()
tom.drink()
tom.introduce()
创建对象jia_fei
jia_fei = Cat()# 调用方法,设置属性
jia_fei.set_info(“加菲猫”, 18)# 调用实例方法
jia_fei.eat()
jia_fei.drink()
jia_fei.introduce()
class Cat(object):
def init(self, new_name, new_age):
self.name = new_name
self.age = new_age
def eat(self):
print("%s在吃鱼...." % self.name)
def drink(self):
print("%s在喝可乐..." % self.name)
def introduce(self):
print("名字是:%s, 年龄是:%d" % (self.name, self.age))
创建对象tom
tom = Cat(“汤姆猫”, 30)# 调用实例方法
tom.eat()
tom.drink()
tom.introduce()
class Hero(object):
“”“定义了一个英雄类,可以移动和攻击”“”
def init(self, new_name, new_hp, new_atk, new_armor):
self.name = new_name # 姓名
self.hp = new_hp # 生命值
self.atk = new_atk # 攻击力
self.armor = new_armor # 护甲值
def move(self):
print("正在前往事发地点...")
def attack(self):
print("发出了一招强力的普通攻击...")
实例化了一个英雄对象,并自动调用__init__()方法
taidamier = Hero(“程咬金”, 1900, 900, 800)
通过.成员选择运算符,获取对象的实例方法
taidamier.info() # 只需要调用实例方法info(),即可获取英雄的属性
taidamier.move()
taidamier.attack()
class Hero(object):
“”“定义了一个英雄类,可以移动和攻击”“”
def __init__(self, new_name, new_skill, new_hp, new_atk, new_armor):
self.name = new_name
self.skill = new_skill
self.hp = new_hp
self.atk = new_atk
self.armor = new_armor
def move(self):
"""实例方法"""
print("%s 正在前往事发地点..." % self.name)
def attack(self):
"""实例方法"""
print("发出了一招强力的%s..." % self.skill)
def info(self):
print("英雄 %s 的生命值 :%d" % (self.name, self.hp))
print("英雄 %s 的攻击力 :%d" % (self.name, self.atk))
print("英雄 %s 的护甲值 :%d" % (self.name, self.armor))
实例化英雄对象时,参数会传递到对象的__init__()方法里
taidamier = Hero(“泰达米尔”, “旋风斩”, 2600, 450, 200)
gailun = Hero(“盖伦”, “大宝剑”, 4200, 260, 400)
调用对象方法
taidamier.attack()
taidamier.move()
gailun.move()
class Teacher(object):
def init(self):
self.name = “王老师”
self.__age = 18 # 这个属性就是私有属性
def set_age(self, new_age):
if 1 <= new_age <= 120:
self.__age = new_age
print("设置年龄成功")
else:
print("年龄数据有误...")
def get_age(self):
return self.age
t = Teacher()
t.set_age(20) # 设置年龄print(t.get_age()) # 获取年龄
class BankService(object):
def __bank_2_bank(self, money):
print(“这里是一行之间的转账代码…”)
return True
def transfer(self):
money = int(input("请输入转账金额"))
if money > 100000:
if self.__bank_2_bank(money):
print("转账成功")
else:
print("转账失败...")
else:
print("都没钱,还转什么啊!自己留着花吧!")
bank_service = BankService()
bank_service.transfer() # 可以调用,是公有方法
class BankService(object):
def __bank_2_bank(self, money):
print(“这里是一行之间的转账代码…”)
return True
def transfer(self):
money = int(input("请输入转账金额"))
if money > 100000:
if self.__bank_2_bank(money):
print("转账成功")
else:
print("转账失败...")
else:
print("都没钱,还转什么啊!自己留着花吧!")
bank_service = BankService()# bank_service.transfer() # 可以调用,是公有方法
bank_service.__bank_2_bank() # 不可以调用,是私有方法
对象的关联
class Classroom(object):
def init(self, name):
self.classroom_name = name
self.stu = None # 一般情况下在本类的其它方法中用到的实例属性,都要在__init__方法中定义
def add_new_stu(self, stu):
"""定义新方法用来完成关联"""
self.stu = stu
class Student(object):
def init(self, name):
self.student_name = name
创建一个教室对象
class205 = Classroom(“205班”)
创建一个学生对象
stu01 = Student(“学生1”)
调用方法将学生添加到对象中
class205.add_new_stu(stu01)
调用学生的姓名# 205教室.学生.姓名print(class205.stu.student_name)
多重继承
class Camera:
def take_photo(self):
“”“拍照功能”“”
print(“正在拍照…”)
class Telephone(Camera):
def call(self):
“”“打电话”“”
print(“正在打电话…”)
def answer(self):
"""接电话"""
print("正在接电话...")
iiphone = Telephone()
iiphone.call()
iiphone.answer()
iiphone.take_photo()
重写
class Father(object):
def play_game(self):
print(“父类中的play_game”)
def drink(self):
print("父类中的drink方法")
class Son(Father):
def play_game(self):
print(“子类中的play_game”)
father = Father()
father.play_game() # 调用父类中的方法,因为对象是父类创建的
son = Son()
son.play_game() # 调用子类中的方法,因为在子类中重写了play_game方法
son.drink() # 调用父类中的方法,因为子类中并没有重写此方法
Super方法
class Father(object):
def init(self, name, age):
self.name = name
self.age = age
def __str__(self):
return "%s的年龄是:%d" % (self.name, self.age)
class Son(Father):
def init(self, name, age, collage):
super().init(name, age)
self.collage = collage
def __str__(self):
return "%s的年龄是:%d,他的学历是:%s" % (self.name, self.age, self.collage)
class GrandChild(Son):
def init(self, *args, **kwargs):
super().init(*args, **kwargs)
print(“----这里模拟其要做的额外事情…----”)
father = Father(“父亲”, 50)print(father)
son = Son(“儿子”, 18, “大学”)print(son)
grandchild = GrandChild(“孙子”, 1, “未上学”)print(grandchild)
多态
class Dog(object):
def bark(self):
print(“狗汪汪叫…”)
class LangDog(Dog):
def bark(self):
print(“狼狗震耳欲聋的叫…”)
class ZangAo(Dog):
pass
class Person(object):
def pk_dog(self, dog):
print(“人 用力的向狗进行了攻击…”)
dog.bark()
laowang = Person()
dog1 = Dog()
dog2 = LangDog()
dog3 = ZangAo()
laowang.pk_dog(dog1)
laowang.pk_dog(dog2)
laowang.pk_dog(dog3)
静态方法
class Calculator(object):
“”“计算器类”“”
def __init__(self):
# 定义2个默认值
self.num1 = 0
self.num2 = 0
@staticmethod
def show_menu():
"""因为打印菜单功能方法并不需要self指向的对象,所以就考虑使用静态方法"""
print(" 东哥牌计算机 V2021.6")
print("1. 加法")
print("2. 减法")
print("3. 乘法")
print("4. 除法")
print("5. 退出")
def get_nums(self):
self.num1 = int(input("请输入第1个数:"))
self.num2 = int(input("请输入第2个数:"))
def add(self):
print(self.num1 + self.num2)
def min(self):
print(self.num1 - self.num2)
def mul(self):
print(self.num1 * self.num2)
def div(self):
print(self.num1 / self.num2)
def run(self):
while True:
self.show_menu()
op = input("请输入要进行的操作:")
if op == "1":
self.get_nums()
self.add()
elif op == "2":
self.get_nums()
self.min()
elif op == "3":
self.get_nums()
self.mul()
elif op == "4":
self.get_nums()
self.div()
elif op == "5":
break
创建一个计算器对象
cal = Calculator()# 调用计算器的运行方法
cal.run()
属性
class Tool(object):
tools_num = 0 # 定义一个类属性,用来存储共享的数据
def __init__(self, name):
self.name = name
Tool.tools_num += 1
def print_info(self):
print("工具的总数为:", Tool.tools_num)
def print_info2():
print("工具的总数为:", Tool.tools_num)
tieqiao = Tool(“铁锹”)
chutou = Tool(“锄头”)
dianciluo = Tool(“电磁炉”)
print(“工具的总数为:”, Tool.tools_num) # 可以直接通过 类名.类属性操作
tieqiao.print_info() # 可以通过Tool创建的任意实例对象调用方法,在方法中获取
Tool.print_info2() # 通过类名调用时,可以看到这个方法在pycharm中提示错误