python面向对象定义类与类方法

简单理解

"""
面向对象:
程序   现实中
对象   具体的事物
现实中的事物 ----> 转换成电脑程序
世间万物皆是对象

好处:
    类
    对象
    属性
    方法
    
对象:
    A的手机
    B的手机
    C的手机
    ....
    
    对象的集合 ----> 共同的特征
    特征:品牌  颜色  大小  价格  --->  属性
    动作:打电话  发短信  上网   ---> 方法
    
    类别: 手机类
    
    
    多个对象 ---> 提取对象的共同特征和动作 --->封装到一个类中
          
"""

# 所有的类名要求首字母大写,多个单词使用驼峰式命名

"""
class 类名[(父类)]:
    属性 :特征
    方法 :动作
"""


class Phone:
    brand = '华为'


print(Phone)

# 使用类创建对象
yp = Phone()

print(yp.brand)
yp.brand = 'iphone'
print(yp.brand)

xy = Phone()

print(xy.brand)

定义类和属性

class Student:
    # 类属性
    name = 'xiaoyun'
    age = 2


xiaoyun = Student()
print(xiaoyun.name, xiaoyun.age)
xiaoyun.age = 18
# 修改类属性时会在对象里面动态创建一个对象属性
# 随后再找这个属性时会先找到对象自己的属性
# 找对象中没有的属性,会去类中寻找该属性
print(xiaoyun.name, xiaoyun.age)

xiaoyong = Student()
print(xiaoyong.name, xiaoyong.age)

xiaoyong.name = 'xiaoyong'
xiaoyong.age = 20

print(xiaoyong.name, xiaoyong.age)

# 修改类属性
Student.name = ''
Student.age = 18

xiaohua = Student()
print(xiaohua.name, xiaohua.age)

类的方法

# 类中方法:动作
# 种类:普通方法 类方法 静态方法 魔术方法


"""
普通方法格式:
def 方法名(self[,参数,参数]):
    pass
"""


class Phone:
    brand = 'xiaomi'
    price = 1999
    type = '11'

    # Phone中的类方法 通过对象.方法名使用
    def call(self):  # 对象调用的时候自动将类本身传到self
        print(f'self---->{self}')
        print('正在打电话.....')


phone1 = Phone()
print(phone1, '--------1-------')
print(phone1.brand)
phone1.call()

print('*' * 30)
phone2 = Phone()
print(phone2, '--------2-------')
phone2.call()


class Phone:
    # 魔术方法之一:__name__()像这种格式的称为魔术方法
    def __init__(self):
        self.brand = 'xiaomi'
        self.price = 5000

    # Phone中的类方法 通过对象.方法名使用
    def call(self):  # 对象调用的时候自动将类本身传到self
        print(f'------->call')
        print(f'价格:{self.price}')
        print('正在打电话.....')


p = Phone()
p.call()

p1 = Phone()
p1.call()
p1.price = 1000
p1.call()


# 初始化对象属性 由外部调用创建对象时传参
class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def eat(self):
        print(f'{self.name}正在吃红烧肉')

    def run(self):
        print(f'{self.name}今年{self.age}岁,正在跑步')


p = Person('lxy', 18)
p.eat()
p.run()

p1 = Person('xy', 19)
p1.eat()
p1.run()

类方法

# 类方法
"""
特点:
    1.定义需要依赖装饰器@classmethod
    2.类方法参数中不是一个对象,而是类
    3.类方法中只可以使用类属性
    4.类方法中不能使用普通方法
    
类方法的作用:
只能访问类属性和类方法,所以可以在对象创建之前,如果需要完成一些功能
就可以通过类方法实现
"""


class Dog:
    def __init__(self, nickname):
        self.nickname = nickname

    def run(self):
        print(f'{self.nickname}在院子里跑来跑去')

    @classmethod
    def test(cls):
        print(cls)


Dog.test()

d = Dog('大黄')
d.run()


# 补充类方法
# 类属性一般不允许在外部修改,在定义类属性时在前面加__属性名(私有化)


class Person:
    __age = 18

    def show(self):
        print('----->', Person.__age)


# Person.age = Person.age + 1  # 报错
# print(Person.age)

# Person.__age = Person.__age + 1  # 报错
# print(Person.__age)
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

azured_xu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值