面向对象:
类中的成员:
In [1]: class A:
...: name=10
...:
In [2]: A.name
Out[2]: 10
In [3]: import inspect
In [4]: inspect.getmembers(A) |
变量(字段),方法(函数):
静态字段
字段
普通字段
普通方法
方法 静态方法
类方法
一.字段eg:
class Student:
grade =1
def __init__(self,name,age ) :
self.name=name
self.age=age
def show(self):
print(self.name,self.age,self.grade)
print(Student.grade)
# print(Student.age) 这个会报错
tom = Student("tom",10)
tom.show()
|
在内存中存储的方式:
In [8]: Student.__dict__
Out[8]:
mappingproxy({'__dict__': <attribute '__dict__' of 'Student' objects>,
'__doc__': None,
'__init__': <function __main__.Student.__init__>,
'__module__': '__main__',
'__weakref__': <attribute '__weakref__' of 'Student' objects>,
'grade': 1,
'show': <function __main__.Student.show>}) | In [10]: tom.__dict__
Out[10]: {'age': 10, 'name': 'tom'} |
图片出自: http://www.cnblogs.com/wupeiqi/p/4766801.html
静态字段的使用:通过修改静态字段,达到统一修改
In [22]: Lili = Student("Lili",9)
In [23]: Lili.grade
Out[23]: 5
In [24]: tom.grade
Out[24]: 5
In [25]: Student.grade=8
In [26]: tom.grade
Out[26]: 8
In [27]: Lili.grade
Out[27]: 8 |
二.方法
1. 普通方法:
普通方法由.obj.function()调用:
eg:
2.静态方法
class Student:
grade = 1
def __init__(self, name, age):
self.name = name
self.age = age
def show(self):
print(self.name, self.age, self.grade)
@staticmethod
def static():
print("静态方法")
Student.static()
tom = Student("tom", 10)
tom.static()
静态方法
静态方法 静态方法可以由classname.func()或obj.func()调用 |
3.类方法
class Student:
grade = 1
def __init__(self, name, age):
self.name = name
self.age = age
def show(self):
print(self.name, self.age, self.grade)
@staticmethod
def static():
sex = "VU"
print("静态方法")
@classmethod
def clss_method(cls):
print(cls.grade)
# print(cls.age)
print("类方法")
# Student.clss_method()
#
# Student.static()
# Student.sex
tom = Student("tom", 10)
tom.clss_method()
|
注意:
可以通过self.调用实例变量或类变量,但静态方法是不可以访问实例变量或类变量的
类方法只能访问类变量,不能访问实例变量
即:
三:属性:
class Person:
@property
def name(self):
return "tom"
@name.setter
def name(self,a):
# print(a)
yield a
@name.deleter
def name(self, a):
return a
|
写法2
class Persoon1:
def get_name(self):
print("get_name")
def set_name(self, name):
print("name", name)
def del_name(self):
print("del_name")
name = property(get_name, set_name, del_name)
|