面向对象基础

Posted tengx

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了面向对象基础相关的知识,希望对你有一定的参考价值。

# 封装中的属性
# 一个人是否健康可以通过bmi值来判断

class Person:
    def __init__(self,name,height,weight):
        self.name = name
        self.height = height
        self.weight = weight

    def bmi(self):
        return {name}的bmi值为{date}.format(name = self.name,date = round(self.weight / self.height ** 2,1))

p1 = Person(Tian,1.70,60)
print(p1.bmi())

# 这里bmi是一个名词一个属性的概念,这样调用是非常不符合规则的
class Person:
    def __init__(self,name,height,weight):
        self.name = name
        self.height = height
        self.weight = weight
    # 加上装饰器之后bmi方法就成为了属性方法
    @property
    def bmi(self):
        return {name}的bmi值为{date}.format(name = self.name,date = round(self.weight / self.height ** 2,1))

p1 = Person(Tian,1.70,60)
print(p1.bmi)
# 属性是可以更改的但是这里我们是一个伪装的属性所以无法更改,对此python中还有一些其他的装饰器
class Person:
    def __init__(self,name,height,weight):
        self.name = name
        self.height = height
        self.weight = weight
        self.__bmi = round(self.weight / self.height ** 2, 1)
    @property
    def bmi(self):
        return {name}的bmi值为{date}.format(name = self.name,date = self.__bmi)

    @bmi.setter
    def bmi(self,num):
        self.__bmi = num

    @bmi.deleter
    def bmi(self):
        del self.__bmi
p1 = Person(Tian,1.70,60)
p1.bmi = 10
print(p1.bmi)
del p1.bmi
# 这样就可以修改了,当然这种写法是不规范的没人会在构造函数做计算,这里只是以此举例
# 类方法
class A:
    count = 20

    @classmethod
    def cal(cls,num):
        return num + cls.count

# 这一类无需对象参与的的方法可以用类方法
print(A.cal(15))



# 父类要获取派生类也可以用类方法
class B(A):
    count = 30
print(B.cal(15))
# 类中的静态方法

class A:
    @staticmethod
    def func(user,pwd):
        if user == Tian and pwd == 666:
            print(success)
        else:
            print(error)


A.func(Tian,666)

# 增加代码的复用性
# 使代码块更加整洁明了

 

以上是关于面向对象基础的主要内容,如果未能解决你的问题,请参考以下文章

Python面向对象学习之八,装饰器

Java基础:封装

面向对象基础

Python基础 面向对象

python基础之面向对象

Python面向对象基础