python面向对象程序设计

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中提示错误

  • 23
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值