码迷,mamicode.com
首页 > 其他好文 > 详细

属性,类方法,静态方法

时间:2018-07-27 21:03:12      阅读:151      评论:0      收藏:0      [点我收藏+]

标签:这一   方法   col   调用   输入   print   登录   小草   init   

属性:将一个方法伪装成一个属性,在代码的级别上没有本质的提升,但是让其看起来更合理

class Person:
    def __init__(self,name,age):
        self.name=name
        if type(age) is int:
            self.__age=age
        else:
            print(输入类型有误)
    @property           #把方法伪装成属性
    def age(self):
        return self.__age
    @age.setter
    def age(self,a1):
        if type(a1) is int:
            self.__age=a1       #改变值是在这一步发生的
        else:
            print(输入类型有误)
p1=Person(张三,18)
print(p1.age)       #伪装成了属性,所以执行不用加括号
p1.age=37
#伪装之后在这传入要改变年龄的值,传给@age.setter下面函数里的a1
print(p1.age)       #此时的age已经被修改了,再执行 @property下面的函数,打印age

 

# 类方法
# 类方法:通过类名调用的方法,类方法中第一个参数约定俗成是 cls , Python自动将类名空间传给cls
class A:
    name=小草
    @classmethod
    def fu(cls):
        return (%s在吃草 % cls.name)
print(A.fu())

 

类中有些方法不需要对象参与
class A:
    name=小花
    age=18
    @classmethod
    def fu(cls):        #此时方法无需对象参与,也可以用对象执行方法,但是在类方法中不要这样用
        return cls.age+1
print(A.fu())

 

 

静态方法

1,对类中的静态变量进行改变,要用类方法
2,继承中,父类得到子类的类空间
不通过类方法,让我的父类的某个方法得到子类的类空间里面的任意值
class A:
    age=12
    def func(self):     #父类里面有func这个方法,执行这个函数方法,此时a1传给self
        print(self.age)     #此时就相当于a1.age,这个age是B类里的age,因为实例化的是B类
class B(A):
    age=22
a1=B()      #B类实例化一个对象
a1.func()
a1就是对象,此时要执行func这个函数方法,先从对象空间里面去找,对象空间里没有func这个方法,然后再去父类里面找

 

 

class A:
    @staticmethod
    def login(username,password):
        if username == fu and password == 123:
            print(登录成功)
        else:
            print(登录失败)
A.login(fu,123)
# # 静态方法
# # 1,代码块.清晰.
# # 2,复用性.

 

属性,类方法,静态方法

标签:这一   方法   col   调用   输入   print   登录   小草   init   

原文地址:https://www.cnblogs.com/hdy19951010/p/9379301.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!