#構造方法 __init__(self)
class bird:
def __init__(self):
self.hunger = true;
def eat(self):
if(self.hunger):
print("aaaah....");
self.hunger = false;
else:
print("no. thanks");
b = bird();
print(b.eat());
print(b.eat());
#繼承##不可以呼叫a.eat();
class songbird(bird):
def __init__(self):self.sound = "squawk!";
def sing(self): print(self.sound);
a = songbird();
a.sing();
a.sing();
#呼叫未繫結的超類構造方法
__metaclass__=type #super函式只在新式類中起作用
class bird:
def __init__(self):
self.hunger = true;
def eat(self):
if(self.hunger):
print("aaaah....");
self.hunger = false;
else:
print("no. thanks");
class songbird(bird):
def __init__(self):
super(songbird, self).__init__();
self.sound = "squawk!";
def sing(self):
print( self.sound );
a = songbird();
a.sing();
a.eat();
#訪問屬性
class rectange:
def __init__(self):
self.width = 0;
self.height = 0;
def setsize(self, size):
self.width , self.height = size;
def getsize(self):
return self.width, self.height;
r = rectange();
r.width = 10; #可以訪問屬性
r.height = 5;
print(r.width, r.height);
r.setsize([100, 50]);
print(r.getsize());
#property函式的使用
__mataclass__= type; #新式類
class rectange:
def __init__(self):
self.width = 0;
self.height = 0;
def setsize(self, size):
self.width , self.height = size;
def getsize(self):
return self.width, self.height;
size = property(getsize, setsize);
r = rectange();
r.width = 10;
r.height = 5;
print(r.size);
r.size = [100, 50];
print(r.width);
#靜態方法和類成員方法
#靜態方法:定義時沒有self引數,能被類本身直接呼叫
#類成員方法:定義時有引數cls,能被類直接呼叫;
##方法一:裝入statimethod和classmethod型別
__mataclass__ = type;
class myclass:
def smeth():
print("that is a static method");
smeth = staticmethod(smeth);
def cmeth(cls):
print("that is a class method of ,", cls);
cmeth = classmethod(cmeth);
print(myclass.smeth());
print(myclass.cmeth());
##方法二:使用@操作符,在方法的上方將裝飾器列出
__mataclass__ = type;
class myclass:
@staticmethod
def smeth():
print("that is a static method");
# smeth = staticmethod(smeth);
@classmethod
def cmeth(cls):
print("that is a class method of ,", cls);
#cmeth = classmethod(cmeth);
print(myclass.smeth());
print(myclass.cmeth());
Python屬性和方法
類屬性 類屬性,直接在類中定義的屬性是類屬性,類屬性可以通過類或類的例項訪問到,但是類屬性只能通過類物件來修改,無法通過例項物件修改 例項屬性 例項屬性,通過例項物件新增的屬性屬於例項屬性,例項屬性只能通過例項物件來訪問和修改,類物件無法訪問修改 類方法 例項方法 靜態方法 定義乙個類 class ...
Python物件導向之私有屬性和方法
定義方式 在定義屬性或者方法時,在屬性名或者方法名前面增加兩個下劃線,定義的就是私有屬性或方法 沒使用私有屬性前 class women def init self,name,age self.name name self.age age def secret self print s 的年齡是 d...
Python 類屬性和方法
import types class dog object slots name color info 定義 slots 該類中只允許 類物件 動態增加 name,color,info,body len 屬性或方法 都是例項屬性或方法 slots 對類的 動態新增屬性和方法 沒有限制,而 類物件 不...