oyuncu diye bir sinif oluşturdum ve bu sınıfa kişi eklemek istiyorum kabukta
isim = oyuncu("isim", "platform")
şeklinde yazarak ekliye biliyorum
bunu nasil fonksiyona cevire bilirim.
fonksiyon benden isim ve platform die 2 değer istiyicek ve bunlardan sinifin icine obje oluşturacak
class Player(object):
def __init__(self, **kwargs):
for key, val in kwargs.items():
setattr(self, key, val)
def player_factory(**kwargs):
return Player(**kwargs)
---
>>> new_player = player_factory(name='isim', platform='platform')
>>> print (new_player.name)
isim
>>> print (new_player.platform)
platform
Biraz genel bir örnek oldu ama işinizi görecektir.
for key, val in kwargs.items():
setattr(self, key, val)
bu kısımda setattr tam olarak ne oluyor
ve tam olarak istediğim şey olmamış
new_player = player_factory(name='isim', platform='platform')
şunu kabuga girmekle
isim = oyuncu(isim,...)
girmek aynı sey
Bir class oluşturup bu class’tan bağımsız bir fonksiyon ile bir obje oluşturmak mı istiyorsunuz.
classın icinde de olabilir oluşturamadığım fonksiyon sadece
class player():
def __init__(self,name,platform):
self.name = name
self.platform = platform
def createObj(name,pla):
newObj = player(name,pla)
print newObj.name
print newObj.platform
createObj("test1","plaform1")
createObj("test2","plaform2")
Bunun gibi mi?
parantez icine elle girerek yapmak istemiyorum benim attiğim ornekteki gibi uygulama benden ayrı ayrı alsın isim ve platformu (bi yere kaydolduğunu dusun konsola kod şeklinde bi kayıt olmuyorsun)
class player():
def __init__(self,name,platform):
self.name = name
self.platform = platform
def createObj():
name = raw_input("isim: ")
pla = raw_input("platform: ")
newObj = player(name,pla)
print newObj.name
print newObj.platform
createObj()
newobj diye sabit obje ismi var fonksiyonu 2.caliştirdıgımda ilk kaydedileni silmiycekmi
class Player():
players=[]
def __init__(self,name,platform):
self.name = name
self.platform = platform
def createObj():
name = raw_input("isim: ")
pla = raw_input("platform: ")
newObj = Player(name,pla)
Player.players.append(newObj)
print newObj.name
print newObj.platform
createObj()
Artık Player sınıfının players niteliğinden tüm nesnelere erişabilirsiniz.
@Dogukan_Cicek, başlığı daha anlamlı bir başlıkla değiştirebilir misiniz? Böylece konu kolaylıkla bulunabilir hale gelecektir.
Bahsettiğiniz sorunu çözen bir desen(pattern) var: Fabrika deseni (Factory pattern). Bu desende, siz sadece bağımlılıkları veriyorsunuz (örneğin bir fonksiyona), daha sonra istediğiniz nesneler oluşturulup size veriliyor; nesnelerin nasıl oluşturulduğuyla ilgilenmiyorsunuz. @r0ark’in verdiği örnek, yeni başlayan biri için biraz kafa karıştırıcı olsa da, iyi bir örnek. Yine de önce bu deseni araştırmanızı tavsiye ederim. Böylece kendiniz de böyle bir fabrika fonksiyonu yazabilirsiniz.