class Student:
def __init__(this, name, age):
this.name = name
'实例变量'
this.age = age
def get_student(this):
print('姓名:{} 年龄:{}'.format(this.name, this.age))
student = Student('张三', 18)
student.get_student()
我一直以为,Python中类里构造函数和函数里的self都是固定的,不可以变动的,今天我才知道。原来这里的self都可以自定义,自己想叫啥名都可以。但是官方推荐还是用self!
一个函数中返回多个结果 以前一直不知道,用了最拙劣的方法,今天改正!
def get_number(num1,num2):
num1 = num1 * 3
num2 = num2 * 2
return num1,num2
age1, age2 = get_number(1,3)
print(age1,age2)
之前一直在想一个问题,我要在一个函数中去循环一个列表或其他,该如何正确的返回呢? 现在找到了答案!
def _get(n):
return n * 2
ss = [_get(i) for i in range(10)]
print(ss)
在实例方法中访问实例变量
class Student(object):
sum = 0
def __init__(self):
self.__class__.sum += 1 # 调用类变量
print(self.__class__.sum)
def get_user(self):
self.__class__.num # 调用类变量
student = Student()
student1 = Student()
student2 = Student()
super作用
"""
super 是用来解决多重继承问题的,直接用类名调用父类方法在使用单继承的时候没问题,
但是如果使用多继承,会涉及到查找顺序(MRO)、重复调用(钻石继承)等种种问题。
总之前人留下的经验就是:保持一致性。要不全部用类名调用父类,要不就全部用 super,不要一半一半。
"""
class Base:
def __init__(self):
print("Create OK")
class A(Base):
"""docstring for A."""
def __init__(self):
super(A, self).__init__() # super的用处
print("1")
class B(Base):
"""docstring for B."""
def __init__(self):
Base.__init__(self)
print("2")
base = Base()
a = A()
b = B()
if __name__ == '__main__':
print(a,b)
定义类方法
class A:
sum = 0
@classmethod # 定义类方法
def plus(cls): # cls 名字一样可以随意更改
cls.sum += 1
print(cls.sum)
a = A()
a.plus()
为什么在python的类中,带有双下划线的函数是私有的,但"__init__"却不是私有的呢?原因很简单,"__init__"不仅前面有两个双下划线,后面还有两个,所以python就知道那个是私有那个是公开的了。
Tags: None