物件的屬性不能繼承。
方法可以呼叫沒有的引數或方法,但執行時會報錯。
@property@***.setter標記的方法可以當作屬性來用。
class animal(object):
def __init__(self):
self.age="yi"
def run(self):
print(self.name,"is running")
class peple(object):
def run(self):
print("peple is running")
def run2(xx):
xx.run()
class dog(animal):
__name=""
__slots__ = ('age') # 用tuple定義允許繫結的屬性名稱
def __init__(self):
self.a , self.b = 0 , 1
def __str__(self):
return 'dog (name: %s)' % self.name # __name一樣
def __iter__(self):
return self
def __next__(self):
self.a ,self.b = self.b , self.a+self.b
if self.a>100:
raise stopiteration()
return self.a
def __getitem__(self,n):
d = dog()
for x in range(n):
next(d)
return d.a
@property
def name(self):
return self.__name
@name.setter
def set_name(self,value):
if len(value)>3:
raise valueerror("長度不能大於三")
self.__name = value
@property
def english_name(self):
return self.__name+"zhi"
peple = peple()
dog = dog()
run2(peple)
run2(dog)#證明多型性,只要有run方法即可
print("origin name:",dog.name)
dog.set_name="liu"
print("after set name:",dog.name)
dog.run()
print(dog)
print("english name:",dog.english_name)
for n in dog:
print(n)
print("getitem*****5n=",dog[5])
dog.set_name="我是五大錘"
print("after set name:",dog.name)
建立類
def fn(self, name='world'): # 先定義函式
print('hello, %s.' % name)
hello = type('hello', (object,), dict(hello=fn)) # 建立hello class
h = hello()
h.hello()
Javascript學習筆記 2(物件 函式)
1 原始變數 number string boolean null undefined。變數記憶體存的就是值,按值傳遞的 2 引用變數 物件變數,變數記憶體存的是指標,所以是按指標傳遞 鑑別原始型別 typeof 但typeof null object 鑑別引用型別 obj instaceof co...
Redis筆記2 物件
redis中總共有五種型別的物件,分別是 字串物件 雙端鍊錶 字典 壓縮列表 整數集合。上述的五種型別的物件均具有相同的結構 typedef struct redisobject 物件的型別總共為五種,如下 可以通過 type 命令驗證 redis物件的型別 編碼決定了redis物件儲存過程中所採用...
AS3 0基礎學習筆記 2 物件
as3.0 的口訣 一切皆是物件 感覺堅持唯物論,哈哈 as3.0 拋棄了as2.0 建立物件的繁瑣,建立物件都使用 new來實現,實現起來既輕鬆又簡單。按照筆記 1 的我們建立的 我們開始解決筆記 1 所提出的小部分問題吧 如何去擴充套件程式?讓我們舞台上畫一條線吧。這樣夠簡單吧,思維也能夠容易接...